package ninja.ugly.prevail.example.ui.controller; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.TextView; import ninja.ugly.prevail.example.model.domain.TodoItem; import static com.google.common.base.Preconditions.checkNotNull; import static ninja.ugly.prevail.example.ui.controller.AddEditTextController.OnEditCompleteListener.EmptyOnEditCompleteListener; public class AddEditTextController extends DataModelController implements CompoundButton.OnCheckedChangeListener, TextView.OnEditorActionListener { private EditText mEditText; private OnEditCompleteListener mOnEditCompleteListener = new EmptyOnEditCompleteListener(); public AddEditTextController(final EditText editText) { super(editText.getContext()); mEditText = editText; mEditText.setOnEditorActionListener(this); mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE); } @Override public void onCheckedChanged(final CompoundButton buttonView, final boolean isChecked) { // Add button checked mEditText.setVisibility(isChecked ? View.VISIBLE : View.INVISIBLE); mEditText.setText(""); mEditText.requestFocus(); } @Override public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) { boolean r = false; if (actionId == EditorInfo.IME_ACTION_DONE || event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) { String s = v.getText().toString(); if (s.length() > 0) { TodoItem ti = new TodoItem(s); getDataModelService().insert(ti); } mOnEditCompleteListener.onEditComplete(s); r = true; } return r; } public void setOnEditCompleteListener(final OnEditCompleteListener onEditCompleteListener) { mOnEditCompleteListener = checkNotNull(onEditCompleteListener); } public interface OnEditCompleteListener { void onEditComplete(CharSequence text); public class EmptyOnEditCompleteListener implements OnEditCompleteListener { @Override public void onEditComplete(final CharSequence text) { // Do nothing } } } }